package cn.ailanyin.home.common.entity;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * 分页封装响应对象
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023-04-23 15:37:43
 */
@Data
@NoArgsConstructor
@SuppressWarnings("unchecked")
public class PageResult<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description = "总记录数")
    public long total;

    @Schema(description = "列表数据")
    public List<T> rows;

    /**
     * Mybatis-Plus 分页
     *
     * @param page page
     * @param <T>  类型
     * @return 分页对象
     */
    public static <T> PageResult<T> build(IPage<T> page) {
        PageResult<T> rspData = new PageResult<>();
        rspData.setRows(page.getRecords());
        rspData.setTotal(page.getTotal());
        return rspData;
    }

    /**
     * PageHelper 分页
     *
     * @param list list
     * @param <T>  类型
     * @return 分页对象
     */
    public static <T> PageResult<T> build(List<T> list) {
        PageResult rspData = new PageResult();
        rspData.setRows(list);
        rspData.setTotal(new PageInfo(list).getTotal());
        return rspData;
    }
}
